import isPlainObject from 'lodash.isplainobject';
import React  from 'react';
import PropTypes from 'proptypes';
import { valueToString } from '../utils/convert';
import { useSelector, useDispatch } from 'react-redux';
import {UPDATE_QUERY,executeQueryIfNeeded} from '../actions/queries';
import { sprintf } from "printj/printj.mjs";
// const remote=  window.myremote.remote;
// import {Menu,MenuItem,MenuButton,SubMenu,ControlledMenu,useMenuState} from '@szhsin/react-menu';
// let createHashHistory=require("history").createHashHistory;
// const history = createHashHistory({
//   hashType: "slash" // the default
// })
export default function TableCell(props){
  const dispatch = useDispatch();
  // const [menuProps,toggleMenu]=useMenuState();
  // const [anchorPoint,setAnchorPoint]=React.useState({x:0,y:0});
  // let contextMenu = null;

  // const onContextMenu = event => {
  //   console.log("onContextMenu");
  //   event.preventDefault();

  //   const value = getValue();

  //   // const hasPreview = typeof value === 'string' || isPlainObject(value);

  //   if (!contextMenu) {
  //     // contextMenu = new Menu();
  //     // contextMenu.append(new MenuItem({
  //     //     label: 'Edit',
  //     //     click: () => {
  //     //       console.log("click edit");
  //     //       console.log(this);
  //     //       // console.log(props.onOpenPreviewClick);
  //     //       props.onEditClick(props.rowIndex,props.col);
  //     //   },
  //     // }));
  //     // // if(hasPreview){
  //     // contextMenu.append(
  //     //   new MenuItem({
  //     //     label: 'Open Preview',
  //     //     click: () => {
  //     //       console.log('click pv');
  //     //       props.onOpenPreviewClick(value);
  //     //     },
  //     //   })
  //     // );
  //     // contextMenu.append(
  //     //   new MenuItem({
  //     //     label: 'delete',
  //     //     click: () => {
  //     //       console.log('click delete');
  //     //       console.log(props);
  //     //       let id=props.data[props.rowIndex].SampleId;
  //     //       let cmd="delete from result where SampleId='"+id+"'";
  //     //       dispatch(executeQueryIfNeeded(cmd,""));
  //     //     },
  //     //   })
  //     // );
  //     // contextMenu.append(
  //     //   new MenuItem({
  //     //     label: '++',
  //     //     click: () => {
  //     //       console.log('click +');
  //     //       console.log(props);
  //     //       let id=props.data[props.rowIndex].SampleId;
  //     //       let oldwt=props.data[props.rowIndex].SampleWeight;
  //     //       let wtb=1.0/1.005;
  //     //       let wt=oldwt*wtb;
  //     //       let old01=props.data[props.rowIndex].Content01;
  //     //       let old02=props.data[props.rowIndex].Content02;
  //     //       let cmd=sprintf("update result set SampleWeight=%0.4f, Content01=%f, Content02=%f where SampleId='%s'",wt,old01/wtb,old02/wtb,id);
  //     //       //return { type: UPDATE_QUERY, query, selectedQuery };
  //     //       dispatch(executeQueryIfNeeded(cmd,""));
  //     //     },
  //     //   })
  //     // );
  //     // contextMenu.append(
  //     //   new MenuItem({
  //     //     label: '--',
  //     //     click: () => {
  //     //       console.log('click -');
  //     //       console.log(props);
  //     //       let id=props.data[props.rowIndex].SampleId;
  //     //       let oldwt=props.data[props.rowIndex].SampleWeight;
  //     //       let wtb=1.005;
  //     //       let wt=oldwt*wtb;
  //     //       let old01=props.data[props.rowIndex].Content01;
  //     //       let old02=props.data[props.rowIndex].Content02;
  //     //       let cmd=sprintf("update result set SampleWeight=%0.4f, Content01=%f, Content02=%f where SampleId='%s'",wt,old01/wtb,old02/wtb,id);
  //     //       //return { type: UPDATE_QUERY, query, selectedQuery };
  //     //       dispatch(executeQueryIfNeeded(cmd,""));
  //     //     },
  //     //   })
  //     // );

  //     // }
  //   }

  //   if (contextMenu) {
  //     console.log(contextMenu);
  //     contextMenu.popup({ x: event.clientX, y: event.clientY });
  //   }
  // };

  const getValue=()=> {
    const { rowIndex, data, col } = props;
    return data[rowIndex][col];
  }
    const value = getValue();
    return (

      <td onClick={() => {
          props.onEditClick(props.rowIndex, props.col);
        }}> 

        {value === null ? 'NULL' : valueToString(value)}
      </td>
    );
}
        // onContextMenu={
        //   e=>{e.preventDefault();
        //   setAnchorPoint({x:e.clientx,y:e.clienty});
        //   toggleMenu(true);
        // }}>

        // <ControlledMenu {...menuProps} 
        //   anchorPoint={anchorPoint}
        //   onClose={()=>toggleMenu(false)}>
        //    <MenuItem onClick={props.onOpenPreviewClick(value)}>preview</MenuItem>
        //    <MenuItem>copy</MenuItem>
        // </ControlledMenu>
